package venta;

import org.joda.time.DateTime;

import exceptions.ErrorEdo;
import exceptions.ErrorFechaDeEnvio;
import exceptions.ErrorSaldo;
import exceptions.ErrorSinStock;

public abstract class EstadoDeEnvio {
	
	Venta venta;
	
	EstadoDeEnvio(Venta unaVenta){
		this.venta=unaVenta;
	}
	
	public Venta getVenta(){
		return this.venta;
	}
	
	boolean cancelado(){
		return false;
	}
	boolean enProceso(){
		return false;
	}
	boolean pendiente(){
		return false;
	}
	boolean reprogramado(){
		return false;
	}
	boolean finalizado(){
		return false;
	}

	public void finalizar() throws ErrorEdo, ErrorSaldo {
		// TODO Auto-generated method stub
		
		//el estado anterior es enProceso OK!
		
		//el monto restante es 0
		
		// ERROR
		
		throw new ErrorEdo();
		
	}

	public void abonar(double d) throws ErrorEdo, ErrorSaldo{
		// TODO Auto-generated method stub
		
		// permite abonar una parte del pedido
		// esto solo puede hacerse en el estado pendiente
		// Montos NO CONTROLADOS!
		
		// ERROR
		
		throw new ErrorEdo();
	}
	
	/*
	public void cancelar(){
		
		EstadoDeEnvio unEstado = new Cancelado(venta);
		((ConEnvio)venta).setEstadoDeEnvio(unEstado);
		
	}
	*/

	public void abonarMontoRestante() throws ErrorEdo, ErrorSaldo {
		// TODO Auto-generated method stub
		throw new ErrorEdo();
		
	}

	public void procesar() throws ErrorEdo,ErrorFechaDeEnvio,ErrorSinStock{
		// TODO Auto-generated method stub
		throw new ErrorEdo();
		
	}

	public void setFechaDeEnvio(DateTime fechaDeEnvio) throws ErrorEdo {
		// TODO Auto-generated method stub
		throw new ErrorEdo();
		
	}

	public void reprogramar() throws ErrorEdo {
		// TODO Auto-generated method stub
		throw new ErrorEdo();
	}

	
	

}
